Phân loại và các ví dụ về các cơ sở dữ liệu NoSQL NoSQL

Có nhiều cách phân loại các cơ sở dữ liệu NoSQL khác nhau, mỗi loại với các loại và loại con khác nhau, một số trong số đó có thể chồng chéo lên nhau. Một phân loại cơ bản dựa trên mô hình dữ liệu, với các ví dụ:

  • Column: Accumulo, Cassandra, Druid, HBase, Vertica
  • Document: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, Lotus Notes, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB
  • Key-value: Aerospike, CouchDB, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB
  • Graph: AllegroGraph, InfiniteGraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog
  • Multi-model: Alchemy Database, ArangoDB, CortexDB, FoundationDB, MarkLogic, OrientDB

Một phân loại chi tiết hơn như sau, dựa trên cách phân loại của Stephen Yen:[20]

LoạiVí dụ
Key-Value CacheCoherence, eXtreme Scale, GigaSpaces, GemFire, Hazelcast, Infinispan, JBoss Cache, Memcached, Repcached, Terracotta, Velocity
Key-Value StoreFlare, Keyspace, RAMCloud, SchemaFree, Hyperdex, Aerospike
Key-Value Store (Eventually-Consistent)DovetailDB, Oracle NoSQL Database, Dynamo, Riak, Dynomite, MotionDb, Voldemort, SubRecord
Key-Value Store (Ordered)Actord, FoundationDB, Lightcloud, LMDB, Luxio, MemcacheDB, NMDB, Scalaris, TokyoTyrant
Máy chủ Cấu trúc dữ liệuRedis
Tuple StoreApache River, Coord, GigaSpaces
Cơ sở dữ liệu đối tượngDB4O, Objectivity/DB, Perst, Shoal, ZopeDB
Document StoreClusterpoint, Couchbase, CouchDB, DocumentDB, Lotus Notes, MarkLogic, MongoDB, Qizx, RethinkDB, XML-databases
Wide Column StoreBigTable, Cassandra, Druid, HBase, Hypertable, KAI, KDI, OpenNeptune, Qbase

Các cơ sở dữ liệu tương quan là mô hình độc lập, và thay vì là kho lưu trữ theo hàng hoặc theo cột, nó lại lưu trữ dựa trên giá trị.

Kho lưu trữ khóa-giá trị

Kho lưu trữ khóa-giá trị (Key-value: KV) sử dụng mảng kết hợp (còn được gọi là bản đồ hoặc từ điển) như là mô hình dữ liệu cơ bản của chúng. Trong mô hình này, dữ liệu được biểu diễn như một bộ sưu tập các cặp khóa-giá trị, như vậy mỗi khoá có thể xuất hiện chỉ một lần trong bộ sưu tập.[21][22]

Mô hình khóa-giá trị là một trong những mô hình dữ liệu không tầm thường đơn giản nhất, và các mô hình dữ liệu phong phú hơn thường được thực hiện như một phần mở rộng của nó. Mô hình khóa-giá trị có thể được mở rộng tới một mô hình ra lệnh rời rạc, duy trì các khóa trong lệnh từ điển.Phần mở rộng này có khả năng tính toán mạnh mẽ, trong đó nó có thể truy hồi hiệu quả các dãy khóa chọn lọc.[23]

Các kho lưu trữ khóa-giá trị có thể sử dụng các mô hình thống nhất bao gồm từ thống nhất cuối cùng cho đến serializability. Một số cơ sở dữ liệu hỗ trợ đặt lệnh của các khóa. Có nhiều triển khai phần cứng khác nhau, và một số người dùng duy trì dữ liệu trong bộ nhớ (RAM), trong khi những người khác sử dụng ổ SSD hoặc đĩa cứng.

Các ví dụ bao gồm cơ sở dữ liệu Oracle NoSQL, Redis, và dbm.

Lưu trữ dữ liệu

Khái niệm trung tâm của một kho lưu trữ tài liệu là khái niệm về "tài liệu". Trong khi mỗi cơ sở dữ liệu hướng tài liệu thực hiện khác nhau về chi tiết của định nghĩa này, nói chung, tất cả chúng đều giả định rằng các tài liệu đóng gói và mã hóa dữ liệu (hoặc thông tin) trong một số định dạng hoặc mã hóa tiêu chuẩn. Mã hóa được sử dụng bao gồm XML, YAML, và JSON cũng như các dạng nhị phân như BSON. Các tài liệu được định địa chỉ trong cơ sở dữ liệu thông qua một từ khóa duy nhất đại diện cho tài liệu đó. Một trong những đặc điểm định nghĩa khác của một cơ sở dữ liệu hướng tài liệu là ngoài việc tra cứu từ khóa được thực hiện bởi một kho lưu trữ khóa-giá trị, cơ sở dữ liệu đó còn cung cấp một API hoặc ngôn ngữ truy vấn để lấy tài liệu dựa trên nội dung của chúng

Những triển khai khác nhau cung cấp nhiều cách khác nhau để tổ chức và / hoặc nhóm các tài liệu:

  • Các bộ sưu tập
  • Thẻ đánh dấu (tag)
  • Siêu dữ liệu không nhìn thấy được
  • Phân cấp thư mục

So với cơ sở dữ liệu quan hệ, ví dụ, các bộ sưu tập có thể được coi là tương tự như các bảng biểu và các tài liệu tương tự như các hồ sơ/bản ghi. Nhưng chúng là khác nhau: mỗi bản ghi trong một bảng có cùng một trình tự của các miền, trong khi các tài liệu trong bộ sưu tập có thể có các miền hoàn toàn khác nhau.

Đồ thị

Loại cơ sở dữ liệu này được thiết kế cho dữ liệu có quan hệ cũng được biểu diễn như một đồ thị bao gồm các yếu tố kết nối qua lại với một số hữu hạn các quan hệ giữa chúng. Loại dữ liệu này có thể là các mối quan hệ xã hội, liên kết giao thông công cộng, bản đồ đường bộ hoặc các topo mạng.

TênNgôn ngữ
Ghi chú
AllegroGraphSPARQLRDF triple store
DEX/SparkseeC++, Java, .NET, PythonGraph database
FlockDBScalaGraph database
IBM DB2SPARQLRDF triple store added in DB2 10
InfiniteGraphJavaGraph database
MarkLogicJava, JavaScript, SPARQL, XQueryMulti-model document database and RDF triple store
Neo4jCypherGraph database
OWLIMJava, SPARQL 1.1RDF triple store
OracleSPARQL 1.1RDF triple store added in 11g
OrientDBJavaMulti-model document and graph database
Sqrrl EnterpriseJavaGraph database
OpenLink VirtuosoC++, C#, Java, SPARQLMiddleware and database engine hybrid
StardogJava, SPARQLGraph database

Cơ sở dữ liệu đối tượng

  • db4o
  • GemStone/S
  • InterSystems Caché
  • JADE
  • NeoDatis ODB
  • ObjectDatabase++
  • ObjectDB
  • Objectivity/DB
  • ObjectStore
  • ODABA
  • Perst
  • OpenLink Virtuoso
  • Versant Object Database
  • ZODB

Dạng bảng

  • Apache Accumulo
  • BigTable
  • Apache Hbase
  • Hypertable
  • Mnesia
  • OpenLink Virtuoso

Tuple store

  • Apache River
  • GigaSpaces
  • Tarantool
  • TIBCO ActiveSpaces
  • OpenLink Virtuoso

Triple/quad store (RDF) database

  • AllegroGraph
  • Apache JENA (Nó là một nền tảng, không phải là một cơ sở dữ liệu)
  • MarkLogic
  • Ontotext-OWLIM
  • Oracle NoSQL database
  • SparkleDB
  • Virtuoso Universal Server
  • Stardog

Hosted

Cơ sở dữ liệu đa giá trị

  • D3 Pick database
  • Động cơ lưu trữ mở rộng (ESE/NT)
  • InfinityDB
  • InterSystems Caché
  • jBASE Pick database
  • Northgate Information Solutions Reality, the original Pick/MV Database
  • OpenQM
  • Revelation Software's OpenInsight
  • Rocket U2

Cơ sở dữ liệu đa mô hình

  • OrientDB
  • FoundationDB
  • ArangoDB
  • MarkLogic

Tài liệu tham khảo

WikiPedia: NoSQL http://databases.about.com/od/specificproducts/a/a... http://www.allthingsdistributed.com/2012/01/amazon... http://www.couchbase.com/sites/default/files/uploa... http://db-engines.com/en/ranking http://www.dummies.com/how-to/content/10-nosql-mis... http://www.eventbrite.com/e/nosql-meetup-tickets-3... http://www.gennet.com/big-data/cant-joins-marklogi... http://www.infoq.com/articles/graph-nosql-neo4j http://www.journalofcloudcomputing.com/content/pdf... http://www.leavcom.com/pdf/NoSQL.pdf